import request from '@/utils/request'

// 菜单管理相关API
// 获取菜单列表
export function getMenuList(params) {
  return request({
    url: '/api/system/menus',
    method: 'get',
    params
  })
}

// 获取菜单树
export function getMenuTree() {
  return request({
    url: '/api/system/menus/tree',
    method: 'get'
  })
}

// 获取用户菜单树（当前用户有权限的菜单）
export function getUserMenuTree() {
  return request({
    url: '/api/system/menus/userTree',
    method: 'get'
  })
}

// 获取菜单详情
export function getMenuDetail(menuId) {
  return request({
    url: `/api/system/menus/${menuId}`,
    method: 'get'
  })
}

// 创建菜单
export function createMenu(data) {
  return request({
    url: '/api/system/menus',
    method: 'post',
    data
  })
}

// 更新菜单
export function updateMenu(data) {
  return request({
    url: `/api/system/menus/${data.id}`,
    method: 'put',
    data
  })
}

// 删除菜单
export function deleteMenu(menuId) {
  return request({
    url: `/api/system/menus/${menuId}`,
    method: 'delete'
  })
}

// 更新菜单状态
export function updateMenuStatus(menuId, status) {
  return request({
    url: `/api/system/menus/${menuId}/status`,
    method: 'put',
    data: {
      status
    }
  })
}

// 获取菜单类型列表
export function getMenuTypes() {
  return request({
    url: '/menu/types',
    method: 'get'
  })
}

// 检查菜单名称是否存在
export function checkMenuNameExists(menuName, parentId, menuId = '') {
  return request({
    url: '/menu/checkName',
    method: 'get',
    params: {
      menuName,
      parentId,
      menuId
    }
  })
}

// 检查菜单权限标识是否存在
export function checkMenuKeyExists(menuKey, menuId = '') {
  return request({
    url: '/menu/checkKey',
    method: 'get',
    params: {
      menuKey,
      menuId
    }
  })
}

// 默认导出所有API方法
export default {
  getMenuList,
  getMenuTree,
  getUserMenuTree,
  getMenuDetail,
  createMenu,
  updateMenu,
  deleteMenu,
  updateMenuStatus,
  getMenuTypes,
  checkMenuNameExists,
  checkMenuKeyExists
}